"""
利润I低于或等于100000元的，奖金可提10%;
利润高于100000元，低于或等于200000元（100000<I≤200000）时，
低于等于100000元部分按10％提成，高于100000元的部分，可提成 7.5%;
200000<I≤400000时，低于200000元部分仍按上述办法提成（下同），高于200000元的部分按5％提成；
400000<I≤600000元时，高于400000元的部分按3％提成；

600000<I≤1000000时，高于600000元的部分按1.5%提成；
I>1000000时，超过1000000元的部分按1%提成。

从键盘输入当月利润I,求应发奖金总数
"""
def calculate_bonus_optimized(I):
    # 定义奖金区间及其对应的提成比例
    brackets = [
        (100000, 0.10),
        (200000, 0.075),
        (400000, 0.05),
        (600000, 0.03),
        (1000000, 0.015),
        (float('inf'), 0.01)  # 使用无穷大表示最后一个区间
    ]
    # 这里初始化了两个变量：bonus 用于累加奖金，
    # previous_bracket 用于跟踪当前区间的前一个区间的上限。
    bonus = 0
    previous_bracket = 0  #

    # 遍历每个区间并计算奖金
    for bracket, rate in brackets:
        if I <= bracket:
            bonus += (I - previous_bracket) * rate
            break
        else:
            bonus += (bracket - previous_bracket) * rate
        previous_bracket = bracket

    return bonus

if __name__ == '__main__':
    # 重新计算利润为150000时的奖金
    print(calculate_bonus_optimized(350000))

